#include "config_task.h"
TaskHandle_t config_handler;

// 申明消息队列
extern QueueHandle_t configQueue;

// 任务分发函数
void distributeMsg(char *msg);

// 初始化心跳任务
void config_task_init()
{
    // 初始化iic
    AT24CXX_Init();
}

// 任务启动函数
void config_task(void *param)
{
    
    while (1)
    {
        // 声明存储位置
        char* msg;
        // 从消息队列中获取配置消息
        if (xQueueReceive(configQueue, &msg, portMAX_DELAY) == pdTRUE)
        {
            // 打印
            printf("config msg: %s \r\n", msg);
            // 任务分发
            distributeMsg(msg);
        }
    }
    
}

// 程序启动函数
void config_task_create()
{
    // 创建任务
    BaseType_t res = xTaskCreate(config_task, "config_task", 128, NULL, 2, &config_handler);
    if (res == pdPASS)
    {
        printf("config_task create success!\r\n");
    }
}  

// 任务分发函数
void distributeMsg(char *msg)
{
    // 获取消息类型
    int type = parseMsgType(msg);
    // 根据type分发任务逻辑
    switch (type)
    {
    case MSG_TYPE_CONFIG:
        // 做本地配置逻辑
        config_THData_Logic(msg);
        break;
    case MSG_TYPE_NETWORK:
        // 做网络配置逻辑
        config_network_Logic(msg);
        break;
    
    default:
        break;
    }
}